package process

import (
	"chatroom/client/model"
	"chatroom/common/message"
	"fmt"
)

//客户端要维护的 map
var onlineUsers map[int]*message.User = make(map[int]*message.User, 10)
var CurUser model.CurUser //我们在用户登录成功后，完成对 curuser 初始化

//在客户端显示当前在线的用户
func outputOnlineUser() {
	fmt.Println()
	//遍历一把 onlineUsers
	fmt.Println("当前用户在线列表：")
	for id, _ := range onlineUsers {
		fmt.Println("用户id:\t", id)
	}
	fmt.Println()
}

//编写方法，处理返回的 NotifyUserStatusMes
func updateUserStatus(notifyUserStatusMes *message.NotifyUserStatusMes) {

	if notifyUserStatusMes.Status == message.UserOnline {

		//适当优化
		user, ok := onlineUsers[notifyUserStatusMes.UserId]
		if !ok { //原来没有
			user = &message.User{
				UserId: notifyUserStatusMes.UserId,
			}
		}

		//添加到 onlineUsers 表
		user.UserStatus = notifyUserStatusMes.Status
		onlineUsers[notifyUserStatusMes.UserId] = user
		
	} else if notifyUserStatusMes.Status == message.UserOffline { //将对应下线id从在线表中删除
/* 		//适当优化
		user, _ := onlineUsers[notifyUserStatusMes.UserId]
		if !ok { //原来没有
			fmt.Println("此用户不存在")
			return
			}
		} */

		fmt.Printf("用户 %d 已下线...",notifyUserStatusMes.UserId)

		//将离线的 用户从中删除
		delete(onlineUsers,notifyUserStatusMes.UserId)
	}

	outputOnlineUser() //显示

}
